<?php

require_once APPPATH.'core/Unit_Test_Abstract.php';

class Perfil_Utest extends Unit_Test_Abstract{

	public function __construct(){
		parent::__construct();
		$this->load->library('unit_test');
	}

	public function index(){

		$dados = array(
				'title' => 'Teste Unitário - Perfil '
		);

		// If somente para verificar se a requisição vem do formulário
		if ($this->input->post('nome')){
			$this->executa_teste();
			$dados ['report'] = $this->unit->report();
		}

		$this->load->view('templates/cabecalho', $dados);
		$this->load->view('perfil/perfil_utest_view', $dados);
		$this->load->view('templates/rodape');

	}

	private function executa_teste(){
		$this->test__construct();
		$this->test_define_perfil();
		$this->test_get();
		$this->test_update_perfil();
		$this->test_delete_perfil($this->input->post('nome'));
		
	}

	private function test__construct()
	{
		$this->load->model("Perfil_Model");
		$this->run( $this->Perfil_Model === NULL, false, 'test__construct', 'Testa o construtor');
	}

	private function test_define_perfil(){
		$this->run( $this->Perfil_Model->define_perfil(), TRUE, 'test_define_perfil', 'Testa a criação de novo Perfil');
	}
	
	private function test_get(){
		$this->run(gettype($this->Perfil_Model->get()), 'array', 'test_get', 'Testa a recuperação de Perfil');
	}
	
	private function test_update_perfil(){
		$this->run($this->Perfil_Model->update_perfil(), TRUE, 'test_update_perfil', 'Testa a atualização de um Perfil');
	}
	private function test_delete_perfil($nome){
		$result = $this->Perfil_Model->get_where(array('nome'=>$nome));
		//print_r($result);
		foreach ( $result as $key => $perfil) {
			$pk=$perfil['id'];
			$this->run($this->Perfil_Model->apaga($pk), 'is_null', 'test_delete_perfil ', 'Testa a remoção de um Perfil');
		}
	}
}
?>